------------------------------------------------------------------------
  ＨｕＣ６２７２用ライブラリ
  画面初期化や文字プットルーチン等が入っています。
  このライブラリの中ではＨｕＣ６２７２のことをＫＩＮＧと呼びます。
------------------------------------------------------------------------
画面モードの設定

#include <libm.h>

int KINGScreen(screen_mode)
char screen_mode;                /* スクリーンモード */

パラメータ
        char screen_mode
                ＫＩＮＧの画面モード。

                0 : 16M色モード
                1 : 64k色モード

        両方とも内部ドットシーケンシャルモード。
        つまりビットマップモードです。

戻り値
        無効なスクリーンモードを指定した場合    -1
        正常終了した場合                        0

備考
        ＫＩＮＧのＢＧモード、使用画面数／モード、マイクロプログラム
        ＣＧ／ＢＡＴアドレス等を設定する。
        画面サイズは２５６×２５６固定

変更されるグローバル変数
        char __cScreenMode              設定されたスクリーンモード
        char __cBgColors                設定された画面モード
        struct BGPRM   ___BGparam       画面モードに応じて変化
        struct BGCGADR ___BGcgadr       BAT/CGアドレス

参照するグローバル変数
        なし

------------------------------------------------------------------------
漢字モードの設定

#include <libm.h>

void KINGKanjiMode(kanji_mode, kanji_color)
char kanji_mode;                        /* 漢字描画モード */
unsigned short kanji_color;             /* 漢字描画用カラーコード */

パラメータ
        char kanji_mode
                漢字描画用モード
                        PSET : 上書きモード
                        XOR  : 排他的論理和モード

        unsigned short kanji_color
                あらかじめ設定された色として以下のものが使えます。
                その他にもＹＵＶで色を作れば直接指定できます。
                １６ビット構成で上位８ビットがＹ下位８ビットのうち
                上位４ビットがＵ下位４ビットがＶです。

                YUV_BLACK       黒
                YUV_BLUE        青
                YUV_RED         赤
                YUV_MAGENTA     マゼンダ
                YUV_GREEN       緑
                YUV_CYAN        シアン
                YUV_YELLOW      黄色
                YUV_WHITE       白

戻り値
        なし

備考
        該当するグローバル変数に値を代入する。

変更されるグローバル変数
        char                    __cKanjiMode    描画モード
        unsigned short          __usKanjiColor  描画カラーコード

参照するグローバル変数
        なし

------------------------------------------------------------------------
漢字文字列表示

#include <libm.h>

void KINGPuts(cx, cy, *kanji_str);
short cx;                        /* Ｘ座標 */
short cy;                        /* Ｙ座標 */
unsigned char *kanji_str;        /* 文字列へのポインタ */

パラメータ
        short cx
                Ｘ座標。ドット単位で指定

        short cy
                Ｙ座標。ドット単位で指定

        unsigned char *kanji_str
                表示する文字列へのポインタ（全角／半角まじり）

戻り値
        なし

備考
        指定座標に全角／半角まじりの文章を描画する。
        Hu28漢字ＲＯＭ内にないフォントについては描画不可能
        内部ドット６４ｋ色のみ使用可能
        半角平仮名には未対応

変更されるグローバル変数
        なし

参照するグローバル変数
        struct BGPRM ___BGparam
                画面サイズの取得に使用

------------------------------------------------------------------------
スクロールレジスタ設定

#include <libm.h>

int KINGScroll(bg_number, cx, cy)
char bg_number;                  /* スクロールさせるＢＧ面番号 */
short cx;                        /* 移動後のＸ座標 */
short cy;                        /* 移動後のＹ座標 */

パラメータ
        char bg_number
                スクロールさせるＢＧ面番号（０ー３）
                現在はKING_BG0固定にしてください。

                KING_BG0        ＢＧ０

        short cx
                移動後のＸ座標

        short cy
                移動後のＹ座標

戻り値
        指定範囲外のＢＧ番号を指定した場合      -1
        正常終了した場合                        0

備考
        ＫＩＮＧのスクロールレジスタを設定する。

変更されるグローバル変数
        なし

参照するグローバル変数
        なし

------------------------------------------------------------------------
画面の初期化

#include <libm.h>

int KINGCls(bg_number)
char bg_number;                        /* クリアするＢＧの面番号 */

パラメータ
        char bg_number
                クリアするＢＧの面番号（０ー３）
                現在はKING_BG0固定にしてください。
                
                KING_BG0        ＢＧ０

戻り値
        指定範囲外のＢＧ番号を指定した場合      -1
        正常終了した場合                        0

備考
        外部ブロックの場合ＢＡＴを００フィル
        内部ブロックの場合ＫＲＡＭ１ブロック（６４kword）を００フィルする

変更されるグローバル変数
        なし

参照するグローバル変数
        char        __cScreenMode
                ＢＧ０のスクリーンモード判別用

------------------------------------------------------------------------
ＫＲＡＭへ大型データの転送

#include <libm.h>

int KINGTrans(bg_number, *picture_address, blocks)
char bg_number;                         /* 転送先ＢＧ面番号 */
unsigned short *picture_address;        /* 転送する絵の先頭アドレス */
unsigned char blocks;                   /* 転送するブロック数 */

パラメータ
        char bg_number
                転送先のＢＧ面番号（０ー３）
                現在はKING_BG0固定にしてください。
                
                KING_BG0        ＢＧ０

        unsigned short *picture_address
                用意した絵の先頭アドレス
        
        unsigned char blocks
                ６４ｋ単位の転送サイズ

戻り値
        指定以外のＢＧ番号を指定した場合        -1
        正常終了した場合                        0

備考
        ＫＲＡＭのＢＧ番号×0x10000 番値に６４ｋワード単位のデータを転送する。

変更されるグローバル変数
        なし

参照するグローバル変数
        なし

------------------------------------------------------------------------
ＫＩＮＧ初期化

#include <libm.h>

void KINGInit(void)

パラメータ
        なし

戻り値
        なし

備考
        このライブラリを使う為の初期化
        kingを初期化後、マイクロプログラム停止、表示ＯＮ／ＯＦＦ設定
        プライオリティを設定する
        RAINBOW > AURORA (7up) > BG3 > BG2 > BG1 > BG0

変更されるグローバル変数
        char        __cDispStatus
                この関数を実行した場合                0

参照するグローバル変数
        なし

------------------------------------------------------------------------
ＫＩＮＧ表示ＯＮ

#include <libm.h>

void KINGDispOn(void)

パラメータ
        なし

戻り値
        なし

備考
        マイクロプログラムを動作開始し、Ｎ鉄をＫＩＮＧ表示に設定

変更されるグローバル変数
        char        __cDispStatus
                この関数を実行した場合                1

参照するグローバル変数
        なし

------------------------------------------------------------------------
ＫＩＮＧ表示ＯＦＦ

#include <libm.h>

void KINGDispOff(void)

パラメータ
        なし

戻り値
        なし

備考
        マイクロプログラムを停止しＮ鉄をＫＩＮＧ非表示に設定

変更されるグローバル変数
        char        __cDispSatus
                この関数を実行した場合                0

参照するグローバル変数
        なし

------------------------------------------------------------------------
ＫＩＮＧ−ＢＧ副画面茶筒モード設定

#include <libm.h>

void KINGCylinder(cBgNumber, cCylMode)
char        cBgNumber;                  /* 変更するＢＧ面番号 */
char        cCylMode;                   /* 設定するモード */

パラメータ
        char        cBgNumber
                茶筒モードのＯＮ／ＯＦＦを操作するＢＧ番号

        char        cCylMode
                モード
                        0 : オフ
                        1 : オン

戻り値
        なし
備考
        指定した副画面の茶筒モードの設定をおこなう

変更されるグローバル変数
        struct BGPRM        ___BGparam
                設定したモードに応じて変化

参照するグローバル変数
        struct BGPRM        ___BGparam
                以前の情報の取得用

------------------------------------------------------------------------
ＫＩＮＧ−ＢＧの画面サイズを変更する

#include <libm.h>

void ChangeSize?( unsigned short usSize)
unsigned short usSize;                /* 変更後の画面サイズ */

パラメータ
        unsigned short usSize
                変更するサイズを指定します。
                以下の３つがlibm.hで定義されています。
                
                DISP_NORMAL      256 x 256 dot
                DISP_WIDE        512 x 256 dot
                DISP_LONG        256 x 512 dot

戻り値
        なし

備考
        指定するＢＧ面によって、以下の関数を使いわけてください。
        現在は０のみ使用してください。
        ０： ChangeSize0
        １： ChangeSize1
        ２： ChangeSize2
        ３： ChangeSize3

変更されるグローバル変数
        struct BGPRM        ___BGparam
                設定した大きさに応じて変化

参照するグローバル変数
        struct BGPRM        ___BGparam
                他画面のサイズの情報取得用

------------------------------------------------------------------------
ＫＩＮＧ−ＢＧに矩形を書く

#include <libm.h>

int KINGBox(int intx, int inty, int endx, int endy, unsigned short color)
int intx;                       /* 始点のＸ座標 */
int inty;                       /* 始点のＹ座標 */
int endx;                       /* 終点のＸ座標 */
int endy;                       /* 終点のＹ座標 */
unsigned short color;           /* 矩形描画に用いる色（ＹＵＶ指定） */

パラメータ
        int intx
                始点のＸ座標を指定します。
        int inty
                始点のＹ座標を指定します。
        int endx
                終点のＸ座標を指定します。
                この時始点のＸ座標より大きくなければいけません。
        int endy
                終点のＹ座標を指定します。
                この時始点のＹ座標より大きくなくてはいけません。
        unsigned short color
                描画に用いる色を指定します。ＹＵＶ指定です。

戻り値
        始点より終点が小さかった場合 -1
        それ以外                      0

備考
        指定領域に矩形を描画します。
        ＫＩＮＧ−ＢＧ０の２５６×２５６モードのみ対応です。

変更されるグローバル変数
        なし

参照するグローバル変数
        なし

------------------------------------------------------------------------
ＫＩＮＧ−ＢＧに塗り潰し矩形を書く

#include <libm.h>

int KINGBoxFill(int intx, int inty, int endx, int endy, unsigned short color)
int intx;                       /* 始点のＸ座標 */
int inty;                       /* 始点のＹ座標 */
int endx;                       /* 終点のＸ座標 */
int endy;                       /* 終点のＹ座標 */
unsigned short color;           /* 矩形描画に用いる色（ＹＵＶ指定） */

パラメータ
        int intx
                始点のＸ座標を指定します。
        int inty
                始点のＹ座標を指定します。
        int endx
                終点のＸ座標を指定します。
                この時始点のＸ座標より大きくなければいけません。
        int endy
                終点のＹ座標を指定します。
                この時始点のＹ座標より大きくなくてはいけません。
        unsigned short color
                描画に用いる色を指定します。ＹＵＶ指定です。

戻り値
        始点より終点が小さかった場合 -1
        それ以外                      0

備考
        指定領域に矩形を塗り潰します。
        ＫＩＮＧ−ＢＧ０の２５６×２５６モードのみ対応です。

変更されるグローバル変数
        なし

参照するグローバル変数
        なし

------------------------------------------------------------------------
ＫＩＮＧ−ＢＧの矩形領域をメモリーに保存する

#include <libm.h>

int KINGGetRect(int intx, int inty, int endx, int endy, unsigned short *buffer)
int intx;                       /* 始点のＸ座標 */
int inty;                       /* 始点のＹ座標 */
int endx;                       /* 終点のＸ座標 */
int endy;                       /* 終点のＹ座標 */
unsigned short *buffer;         /* 領域を保存するアドレス */

パラメータ
        int intx
                始点のＸ座標を指定します。
        int inty
                始点のＹ座標を指定します。
        int endx
                終点のＸ座標を指定します。
                この時始点のＸ座標より大きくなければいけません。
        int endy
                終点のＹ座標を指定します。
                この時始点のＹ座標より大きくなくてはいけません。
        unsigned short *buffer
                領域を保存する場所のポインターを指定します。

戻り値
        始点より終点が小さかった場合 -1
        それ以外                      0

備考
        ＫＩＮＧ−ＢＧから指定矩形領域をポインターで指定したバッファに
        転送します。ＫＩＮＧ−ＢＧ０の２５６×２５６モードのみ対応です。

変更されるグローバル変数
        なし

参照するグローバル変数
        なし

------------------------------------------------------------------------
ＫＩＮＧ−ＢＧの矩形領域にメモリーからコピーする

#include <libm.h>

int KINGPutRect(int intx, int inty, int endx, int endy, unsigned short *buffer)
int intx;                       /* 始点のＸ座標 */
int inty;                       /* 始点のＹ座標 */
int endx;                       /* 終点のＸ座標 */
int endy;                       /* 終点のＹ座標 */
unsigned short *buffer;         /* 領域が保存されているアドレス */

パラメータ
        int intx
                始点のＸ座標を指定します。
        int inty
                始点のＹ座標を指定します。
        int endx
                終点のＸ座標を指定します。
                この時始点のＸ座標より大きくなければいけません。
        int endy
                終点のＹ座標を指定します。
                この時始点のＹ座標より大きくなくてはいけません。
        unsigned short *buffer
                領域を保存されている場所のポインターを指定します。

戻り値
        始点より終点が小さかった場合 -1
        それ以外                      0

備考
        KINGGetRectで保存した領域からＫＩＮＧ−ＢＧの指定矩形領域に転送します。
        ＫＩＮＧ−ＢＧ０の２５６×２５６モードのみ対応です。

変更されるグローバル変数
        なし

参照するグローバル変数
        なし

------------------------------------------------------------------------
Ｃ６２６１の初期化

#include <libm.h>

void NTInit(void)

パラメータ
        なし

戻り値
        なし

備考
        vlibの init_nt()を行なった後、画面をノンインターレースに設定
        する。

変更されるグローバル変数
        char        __cel_stat
                この関数を実行した場合        0
        char        __cel_fb
                この関数を実行した場合  0

参照するグローバル変数
        なし

------------------------------------------------------------------------
セロファンの設定

#include <libm.h>

void NTCelMode(device_no, cel_mode)
char device_no;                        /* デバイス番号 */
char cel_mode;                        /* 設定するモード */

パラメータ
        char    device_no
                設定するデバイスの番号

                DEV_7BG         7up BG
                DEV_7SP         7up SP
                DEV_KBG0        KING-BG 0
                DEV_KBG1        KING-BG 1
                DEV_KBG2        KING-BG 2
                DEV_KBG3        KING-BG 3
                DEV_RAIN        RAINBOW

        char    cel_mode
                設定するモード

                CEL_OFF         セロファンオフ
                CEL_1           セロファン係数１を使用
                CEL_2           セロファン係数２を使用
                CEL_3           セロファン係数３を使用

戻り値
        なし

備考
        指定したデバイスのセロファン機能のＯＮ／ＯＦＦ、
        どのセロファン係数を使用するかを設定する。

変更されるグローバル変数
        __cel_param.celcr
                設定されたモードに応じて変更

参照するグローバル変数
        なし

------------------------------------------------------------------------
フロント／バックセロファンの ON/OFF

#include <libm.h>

void NTFbCel(cel_mode)
char cel_mode;                
パラメータ
        char    cel_mode
                フロント／バックセロファンの選択

                CEL_OFF         フロント／バックセロファンオフ
                CEL_FRONT       フロントセロファンを使用
                CEL_BACK        バックセロファンを使用
戻り値
        なし
備考
        フロント／バックセロファンの選択、
        フロント／バックセロファン機能のＯＮ／ＯＦＦを設定する

変更されるグローバル変数
        __cel_stat
                セロファンＯＦＦ時              0
                セロファンＯＮ時                1
        __cel_fb
                セロファンＯＦＦ時              0
                バックセロファン選択時          0
                フロントセロファン選択時        1

参照するグローバル変数
        なし

------------------------------------------------------------------------
固定カラーレジスタの設定

#include <libm.h>

void NTFixc(usFixedColor)
unsigned short usFixedColor;                /* 設定するカラー */
パラメータ
        unsigned short usFixedColor        
                設定するカラーコード

戻り値
        なし

備考
        フロント／バックセロファンに使用するカラーコードを設定する

変更されるグローバル変数
        __cel_param.fixc        設定したコード

参照するグローバル変数
        なし

------------------------------------------------------------------------
